#include "fan.hpp"
#include "system.hpp"
#include "apm32f0xx_gpio.h"

bool _Fan::init(void){
    GPIO_Config_T gpio_configuration;
    System_setPeripheralClockEnable(CLK_GPIOB,TRUE);
    gpio_configuration.pin = GPIO_PIN_6;
    gpio_configuration.mode = GPIO_MODE_OUT;
    gpio_configuration.outtype = GPIO_OUT_TYPE_PP;
    gpio_configuration.speed = GPIO_SPEED_50MHz;
	gpio_configuration.pupd = GPIO_PUPD_PU;
    GPIO_Config(GPIOB,&gpio_configuration);  

    return true;
}

bool _Fan::deinit(void){

    return true;
}

void _Fan::set(bool status){
    if( status == true){
        GPIO_SetBit(GPIOB,GPIO_PIN_6);
    }else{
        GPIO_ClearBit(GPIOB,GPIO_PIN_6);
    }
    
}

bool _Fan::get(){
    if( GPIO_ReadInputBit(GPIOB,GPIO_PIN_6) ) return true;
    else return false;
}

static Fan * _fan = nullptr;
Fan *Fan::getInstance(){
    if( _fan == nullptr){
        _fan = new _Fan();
        _fan->init();
    }
    return _fan;
}
